//jiudge: 26520: 1687343940
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
typedef long long ll;
const long long mod=1e9+9;
string s;
ll qpow(ll x,ll n,ll mod)
{
ll res=1;
while(n>0)
{
if(n&1)res=res*x%mod;
x=x*x%mod;
n>>=1;
}
return res;
}
int main()
{
ll n,a,b,k;
cin>>n>>a>>b>>k;
cin>>s;
ll res=0;
for(int i=0;i<s.size();++i)
{
int flag;
s[i]=='+'?flag=1:flag=-1;
res= ((res+flag*qpow(a, n-i, mod) * qpow(b, i, mod) )% mod + mod) % mod;
}
ll t = qpow(b, k, mod) * qpow(a, k * (mod - 2), mod) % mod;
if (t == 1)
{
res = res * ((n + 1) / k) % mod;
}
else
{
res = res * (qpow(t, (n+1)/k, mod) - 1) % mod * qpow(t-1, mod - 2, mod) % mod;
}
cout<<res;
return 0;
}
275. H-Index II | 274. H-Index |
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |
71. Simplify Path | 62. Unique Paths |
50. Pow(x, n) | 43. Multiply Strings |
34. Find First and Last Position of Element in Sorted Array | 33. Search in Rotated Sorted Array |
17. Letter Combinations of a Phone Number | 5. Longest Palindromic Substring |
3. Longest Substring Without Repeating Characters | 1312. Minimum Insertion Steps to Make a String Palindrome |